<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      // 箭头函数：
      // 1.什么样的函数可以改成箭头函数；赋值式的函数可以改；
      // ES5
      // 赋值式 、匿名函数
      // let fn = function(){
      //     console.log("fn")
      // }
      // fn();
      // 声明式  命名式
      // function fn(){
      //     console.log("fn");
      // }
      // fn();

      // 2.如何改箭头函数
      // 没有返还值的函数
      // ES5
      // let fn = function(){
      //     console.log("fn");
      // }

      // ES6
      // let fn = ()=>{
      //     console.log("fn")
      // }
      // fn();
      // 参数问题 ；
      // ES5
      // let fn = function(a){
      //     console.log("fn",a);
      // }
      // ES6箭头语法 ：如果是一个参数可以省略小括号

      // let fn = a=>{
      //     console.log("fn",a);
      // }

      // fn(1);

      // 多个参数不能省略小括号
      // let fn = (a,b)=>{
      //     console.log("fn",a,b);
      // }

      // fn(1,2);

      // 改写有返还值的函数；

      // ES5
      // let fn = function(a){
      //     return a;
      // }
      // es6: 箭头函数 没有大括号的时候 隐式带return；
      //     let fn = a=>{
      //         return a;
      //     };
      //    console.log(  fn(2))

      // ES5
      // let fn = function(age){
      //     return {name:"张三",age};
      // }

      // console.log(fn(21));

      // ES6;有歧义 ；
      // let fn  = age=>({name:"张三",age});
      // let fn = age=>{
      //     return {name:"张三",age}
      // }
      // console.log(fn(21));

      // 各种回调改写箭头函数
      var arr = ["张三", "李四", "王五"];
      //   var newarr =   arr.map(function(item){
      //         return item;
      //     })
      var newarr = arr.map(item => item);
      console.log(newarr);

      var arr = [
        {
          name: "张三",
          age: 20,
          gender: "男",
          ischeck: false,
        },
        {
          name: "李四",
          age: 27,
          gender: "男",
          ischeck: true,
        },
        {
          name: "王五",
          age: 23,
          gender: "女",
          ischeck: false,
        },
        {
          name: "王六",
          age: 29,
          gender: "男",
          ischeck: true,
        },
      ];
      // 1.获取所有的年龄在20以上的人员 2.获取所有的男性 3.判断是否全部ischeck为true
      var arr2 = arr.filter(function (item) {
        return item.age > 20;
      });
      var arr3 = arr2.filter(function (item) {
        return item.gender == "男";
      });
      var res1 = arr3.every(function (item) {
        return item.ischeck;
      });
      console.log(res1);

      // ES6箭头函数改写
      let res = arr
        .filter(item => item.age > 20)
        .filter(item => item.gender == "男")
        .every(item => item.ischeck);
      console.log(res);
    </script>
  </body>
</html>
